今天要教兩個進階的語法,這兩個沒有什麼特別的關聯,只是因為還有很多要教教不完所以放在一起講XD,我一樣給你Codecademy的進階篇章,第一節就是enum,你可以搭配練習使用。
今天會學到
簡單來說是用來表達成員的清單,在沒有使用enum的時候,假設你要設計方位,我們需要先自己設計,東,西,南,北分別對應0,1,2,3,如下面程式碼所示
var CompassPoint = 0 //假定目前方方位是0
switch CompassPoint {
case 0: print("東")
case 1: print("西")
case 2: print("南")
case 3: print("北")
}
這樣如果時間久了或是其他人就會完全不懂數字代表的是什麼意思,如果你說不要用數字,改成用字串來表示呢?
var CompassPoint = "東"
switch CompassPoint {
case "東": print("東")
case "西": print("西")
case "南": print("南")
case "北": print("北")
}
這樣是不是看起來不錯,但是可能還是會出現問題,像是輸入字串時輸入錯了等等。
但如果使用enum上面的問題就可以完全解決,而且以後要維護也非常的方便
enum CompassPoint { //我們先建立一個叫方位裡面的成員有東南西北
case north
case south
case east
case west
}
var direction = CompassPoint.east //然後設定目前的方位為東
switch direction { //之後我們用switch就可以知道有哪些值可以匹配囉
case .east: print("東")
case .west: print("西")
case .south: print("南")
case .north: print("北")
}
enum是成為強大的工程師必要的技能,不管是跟別人合作還是之後要維護專案,多多使用enum可以讓你事半功倍,我老師寫的文章非常詳盡解說enum如何使用,推薦閱讀。
如果你要宣告一個值,但是那個值不一定會有的時候,你就可以使用optional。
這邊我舉個例子你一定能明白。有一場考試,但是小明缺考了,你可以怎麼表示分數?用0分來表示?可以但是語義就有點不太對了,如果小明的分數可以直接是空的就能表示缺考了呢!
var point: Int? //在值的型別後面加個"?"就可以表示是optional的值了,預設就是空的值nil
所以當你在處理不一定會有的資料時就可以使用optional,再舉個例子,大家都會有Last name跟First name,但是卻不是每個人都有middle name,所以middle name我們就可以使用optional來表示
let firstName: String = "Franklin"
let middleName: String?
let lastName:String = "Roosevelt"
想知道更多optional的語法可以看這裡